package com.xyh.transaction.config;

import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @author xiaoyh
 */
@Slf4j
@Data
@Component
@ConfigurationProperties(prefix = "alipay")
public class AlipayConfig {

    /**
     * appId
     */
    private String appId;

    /**
     * 私钥
     */
    private String appPrivateKey;

    /**
     * 公钥
     */
    private String publicKey;

    /**
     * 回调地址
     */
    private String notifyUrl;

    /**
     * 支付宝配置初始化,公钥模式
     */
    @PostConstruct
    public void init() {
        Config config = new Config();
        //#基础配置
        config.protocol = "https";  //协议
        config.gatewayHost = "openapi-sandbox.dl.alipaydev.com";    //支付宝网关
        config.signType = "RSA2";   //签名方式
        //#业务配置
        config.appId = this.appId;  //应用id
        config.merchantPrivateKey = this.appPrivateKey;    //应用私钥
        config.alipayPublicKey = this.publicKey;    //支付宝公钥
        config.notifyUrl = this.notifyUrl;  //回调地址  原则：外网post访问该异步地址为http200状态即可。 记录：ngrok内网穿透结果还是不行
//异步通知地址一定要是服务器上绝对路径地址，地址后不可带自定义参数，异步通知里面在完成业务逻辑后，需要输出success， 异步通知返回里面不支持任何跳转语句，重定向。另cookie、session，js，html，application也不支持。
        Factory.setOptions(config);
        log.info("支付宝配置初始化完成");
    }

}
